#ifndef GET_WEATHER_H
#define GET_WEATHER_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <pthread.h>
#include <errno.h>
#include "lvgl/lvgl.h"
#include "cJSON.h"

// 1. 天气数据结构体
typedef struct {
    char city[50];     // 城市名
    char weather[20];  // 天气（中文）
    char temp[10];     // 温度（℃）
} WeatherData;

// 2. 全局LVGL组件声明（供源文件访问）
extern lv_obj_t *ui_WeatherCity;   // 城市标签
extern lv_obj_t *ui_WeatherInfo;   // 天气+温度标签
extern lv_obj_t *ui_WeatherIcon;   // 天气图标

// 3. 外部资源声明（SquareLine导出的图标和字体）
extern const lv_img_dsc_t SUN;     // 晴天图标
extern const lv_img_dsc_t DUOYUN;  // 多云图标
extern const lv_img_dsc_t YINTIAN; // 阴天图标
extern const lv_img_dsc_t YUTIAN;  // 雨天图标
extern const lv_img_dsc_t SNOW;    // 雪天图标
extern const lv_img_dsc_t LOAD;    // 加载中图标
extern const lv_img_dsc_t ERROR;   // 错误图标
extern const lv_font_t lv_font_sunti_24; // 字体

// 4. 函数声明（确保与源文件定义一致）
const char* weather_en_to_cn(const char* en_weather); // 英文转中文
int get_weather_once(WeatherData *data);              // 单次获取天气
void* update_weather_loop(void *arg);                 // 天气更新线程（返回void*）
void lv_refresh_weather(void *arg);                   // 刷新天气界面
void lv_refresh_weather_fail(void *arg);              // 刷新失败界面
const char* get_weather_icon(const char* weather_cn); // 匹配天气图标
void ui_WeatherComponent_Create(lv_obj_t *parent);    // 创建天气组件
int Weather_display();                                // 你声明的显示函数（空实现，可扩展）

#endif